package tools

import (
	"fmt"
	"gorm.io/gorm"
	"time"
)

// GenerateId 基于时间戳生成一个全局唯一的id
func GenerateId() int64 {
	return time.Now().UTC().UnixMilli() - time.Date(2025, 1, 1, 0, 0, 0, 0, time.UTC).UnixMilli()
}

// Paginate 通用分页器
func Paginate(page, pageSize int) func(db *gorm.DB) *gorm.DB {
	return func(db *gorm.DB) *gorm.DB {
		// 去除异常的分页尺寸
		if pageSize > 50 {
			pageSize = 50
		}
		if pageSize <= 0 {
			pageSize = 10
		}
		offset := (page - 1) * pageSize
		return db.Offset(offset).Limit(pageSize)
	}
}

func LogFormat(color string, logCategory string, log string) string {
	return fmt.Sprintf("%s [%s] [%s] %s", color, time.Now().Format(time.DateTime), logCategory, log)
}
